package com.woniuxy.rabbitmq79.work;

import com.rabbitmq.client.*;

import java.io.IOException;

/**
 * @Author zhangyong
 * @Date 2021/8/11 0011上午 11:40
 */
public class WorkConsumerB {
    public static void main(String[] args) throws Exception {
        //1.创建连接工厂：创建连接
        ConnectionFactory factory = new ConnectionFactory();

        //2.设置连接参数
        factory.setHost("localhost");   //mq的ip
        factory.setUsername("guest");   //账号
        factory.setPassword("guest");   //密码
        factory.setVirtualHost("/");    //设置虚拟主机 不设置默认/

        //3.创建连接
        Connection connection = factory.newConnection();     //IO异常

        //4.创建通道
        Channel channel = connection.createChannel();

        //5.创建消息队列
        //参数1：队列的名字
        //参数2：是否持久化队列
        //参数3：是否排它，是否只允许一个消费者连接
        //参数4：是否自动删除这个队列
        //参数5:初始化参数（消息队列的长度，死信交换，消息溢出处理方式等。。。）
        channel.queueDeclare("work", false, false, false, null);

        //6.创建消费者对象
        Consumer consumer = new DefaultConsumer(channel) {
            //
            @Override
            public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException {
                //
                String message = new String(body, "UTF-8");
                //
                System.out.println(message);
            }
        };

        //7.消费者消费消息
        //参数1：消息队列名字
        //参数2：true
        //参数3：接收到消息之后由谁来处理
        channel.basicConsume("work", true, consumer);

        //关闭资源
//        channel.close();
//        connection.close();

    }
}
